module.exports = [
    {
        title: '1.闭包？什么是闭包？--JavaScript前端',
        author: 'abc',
        createTime: '2022-1-20',
        content: '闭包的背景 由于js中只有两种作用域，全局作用域和函数作用域， 闭包的使用 函数柯里化 使用call实现bind 矩阵点击应用',
        poster: 'https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/26f8803db63f4042a76c8e46151d6254~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp',
        detail: `为了便于理解，我们将外部函数比喻为妈妈本体，里面保存着总钱数这个变量和消费这个行为，通过创建为儿子消费的这个行为对象，然后执行这个行为花费5元，返回剩余的95元。
这个就是为了将变量money保存在mother本体内而避免暴露在外部的全局环境作用域中，只能通过mother()创建消费行为来影响money这个变量。
        由此可以归纳总结使用闭包的三个步骤
用外层函数包裹变量，函数；
        外层函数返回内层函数；
        外部用变量保存外部函数返回的内层函数
目的是为了形成一个专属的变量，只在专属的作用域中操作。
        上述的闭包代码示例中，有一个缺陷的场景是，在后续不需要money变量的情况下，没有释放该变量，造成内存泄露。原因是payForSon这个函数的作用域链引用着money对象，解决的办法是将payForSon = null就可以释放方法作用域，进而解除对money的引用，最后释放money变量。
        `,
        support: 40,
        look: 1100,
    },
    {
        title: '2.GPT-4 炸裂成那样，前端真的还有机会吗？我是这么看的~',
        author: 'abc',
        createTime: '2022-2-20',
        content: '虽然在短期内，ChatGPT将使开发人员能够更快地完成开发工作，而不是取代他们。但技术的发展日新月异，很难想象 ChatGPT及其他的大模型在 10 到 20 年后会是什么样子。',
        poster: 'https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c71aab5ed03640aabf2d70a618f3bb06~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `其实这背后的逻辑并不难理解，chatGPT 所训练的数据来源于互联网，它目前还具备自我生成、左右手互博的能力，也就意味着，答案的最终来源仍然是网页背后千千万万的开发者。如果他们被一瞬间干掉了，chatGPT 的数据从哪来？答案的保真度、新鲜度从何而来？你敢说 2 年、3年、5年后的React写法、功能和现在一样？还有那千千万万不断迭代的 npm 包！
更有甚的可能会是一些严重的社会民生问题，比如，你司的医疗APP接入 chatGPT，作为24小时人工智能客服机器人给病人问诊开药，你能保证机器人不会将感冒错误地诊断为XinGuan？你能保证机器人不会给病人开错药？
因此，准确性可能会逐渐提高，但永远不会完美，因为互联网上的数据本身准确性就非常有问题。在庞大的用户群面前，哪怕一两个典型的事件就足可能杀死一家公司，更别说几十上百件。
`,
        support: 60,
        look: 200,
    },
    {
        title: '3.2023高频前端面试题合集之Vue篇',
        author: 'dev',
        createTime: '2022-2-20',
        content: '近期整理了一下高频的前端面试题，分享给大家一起来学习。如有问题，欢迎指正！ 欢迎大家关注该专栏：点赞👍 + 收藏🤞 前端面试题系列文章： 【1】2022高频前端面试题——HTML篇 【2】2022',
        poster: 'https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1e1900201d7246f9b6c51c89ff0f47fd~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `Vue2.x 采用数据劫持结合发布订阅模式（PubSub 模式）的方式，通过 Object.defineProperty 来劫持各个属性的 setter、getter，在数据变动时发布消息给订阅者，触发相应的监听回调。
当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时，Vue 将遍历它的属性，用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter，但是在内部它们让 Vue 追踪依赖，在属性被访问和修改时通知变化。
Vue 的数据双向绑定整合了 Observer，Compile 和 Watcher 三者，通过 Observer 来监听自己的 model 的数据变化，通过 Compile 来解析编译模板指令，最终利用 Watcher 搭起 Observer 和 Compile 之间的通信桥梁，达到数据变化->视图更新，视图交互变化（例如 input 操作）->数据 model 变更的双向绑定效果。
Vue3.x 放弃了 Object.defineProperty ，使用 ES6 原生的 Proxy，来解决以前使用 Object.defineProperty 所存在的一些问题。`,
        support: 90,
        look: 120,
    },
    {
        title: '4.【Node 连载 6/9】探索面向未来标准的 Node.js Web 框架',
        author: 'xxx',
        createTime: '2022-6-20',
        content: '繁易来自阿里集团淘系技术部 - Node.js 架构组，是一名资深的前端工程师。在本文中，繁易大大将为我们讲述探索面向未来标准的 Node.js Web 框架。',
        poster: 'https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/66ea9300a688446d9cb14eb9ec567872~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `众所周知，Node.js 自 2009 年发布以来，已经有十多年的时间了。在这期间，各种 Web 框架层出不穷。在我们淘宝技术团队中，我们早早就开始了前后端以及 Node.js 框架等一系列相关的探索和工作。在这里，我想与大家分享一下我们最近一段时间的思考和进展。目前，Node.js 可以用于很多不同的任务，包括编写 CLI、处理数据、编写 Restful API、页面渲染等等一系列工作。可以说，Node.js 的出现使得前端工程师的领域发生了拓展，越来越广泛，也催生了大前端的概念。`,
        support: 100,
        look: 333,
    },
    {
        title: '5.做寒冬里的一团火-Vue面试',
        author: 'xxx',
        createTime: '2022-6-20',
        content: '这个春天依旧寒冷，在冷风中，唯一能做的就是燃烧自己，如果烧不起来，那就进来一起抱团取暖吧。😂😂😂❤️❤️❤️',
        poster: 'https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b5d62c6a1a8b4ea98871bbe489b2359b~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `众所周知，Node.js 自 2009 年发布以来，已经有十多年的时间了。在这期间，各种 Web 框架层出不穷。在我们淘宝技术团队中，我们早早就开始了前后端以及 Node.js 框架等一系列相关的探索和工作。在这里，我想与大家分享一下我们最近一段时间的思考和进展。目前，Node.js 可以用于很多不同的任务，包括编写 CLI、处理数据、编写 Restful API、页面渲染等等一系列工作。可以说，Node.js 的出现使得前端工程师的领域发生了拓展，越来越广泛，也催生了大前端的概念。`,
        support: 100,
        look: 333,
    },
    {
        title: '6.面试官：你可以用 for of 遍历 Object 吗？',
        author: 'xxx',
        createTime: '2022-6-20',
        content: '可以说迭代器模式就是为了遍历存在的。提到遍历，大家都对那些手段耳熟能详了，下面我们先简单列一下各种数据类型的遍历',
        poster: 'https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/32938d0ae94142f68fa09c28cbd942f8~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `根据上面讲到的内容，需要给对象也部署 Iterator 接口（其实就是在Object.prototype上实现一个以Symbol.iterator为名的function，这个function返回一个有next方法的对象，每调用一次 next, 能够依次返回数组中的项，直到它指向数据结构的结束位置 ）`,
        support: 100,
        look: 333,
    },
    {
        title: '7.闭包？什么是闭包？--JavaScript前端',
        author: 'abc',
        createTime: '2022-1-20',
        content: '闭包的背景 由于js中只有两种作用域，全局作用域和函数作用域， 闭包的使用 函数柯里化 使用call实现bind 矩阵点击应用',
        poster: 'https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/26f8803db63f4042a76c8e46151d6254~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp',
        detail: `为了便于理解，我们将外部函数比喻为妈妈本体，里面保存着总钱数这个变量和消费这个行为，通过创建为儿子消费的这个行为对象，然后执行这个行为花费5元，返回剩余的95元。
这个就是为了将变量money保存在mother本体内而避免暴露在外部的全局环境作用域中，只能通过mother()创建消费行为来影响money这个变量。
        由此可以归纳总结使用闭包的三个步骤
用外层函数包裹变量，函数；
        外层函数返回内层函数；
        外部用变量保存外部函数返回的内层函数
目的是为了形成一个专属的变量，只在专属的作用域中操作。
        上述的闭包代码示例中，有一个缺陷的场景是，在后续不需要money变量的情况下，没有释放该变量，造成内存泄露。原因是payForSon这个函数的作用域链引用着money对象，解决的办法是将payForSon = null就可以释放方法作用域，进而解除对money的引用，最后释放money变量。
        `,
        support: 40,
        look: 1100,
    },
    {
        title: '8.GPT-4 炸裂成那样，前端真的还有机会吗？我是这么看的~',
        author: 'abc',
        createTime: '2022-2-20',
        content: '虽然在短期内，ChatGPT将使开发人员能够更快地完成开发工作，而不是取代他们。但技术的发展日新月异，很难想象 ChatGPT及其他的大模型在 10 到 20 年后会是什么样子。',
        poster: 'https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c71aab5ed03640aabf2d70a618f3bb06~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `其实这背后的逻辑并不难理解，chatGPT 所训练的数据来源于互联网，它目前还具备自我生成、左右手互博的能力，也就意味着，答案的最终来源仍然是网页背后千千万万的开发者。如果他们被一瞬间干掉了，chatGPT 的数据从哪来？答案的保真度、新鲜度从何而来？你敢说 2 年、3年、5年后的React写法、功能和现在一样？还有那千千万万不断迭代的 npm 包！
更有甚的可能会是一些严重的社会民生问题，比如，你司的医疗APP接入 chatGPT，作为24小时人工智能客服机器人给病人问诊开药，你能保证机器人不会将感冒错误地诊断为XinGuan？你能保证机器人不会给病人开错药？
因此，准确性可能会逐渐提高，但永远不会完美，因为互联网上的数据本身准确性就非常有问题。在庞大的用户群面前，哪怕一两个典型的事件就足可能杀死一家公司，更别说几十上百件。
`,
        support: 60,
        look: 200,
    },
    {
        title: '9.2023高频前端面试题合集之Vue篇',
        author: 'dev',
        createTime: '2022-2-20',
        content: '近期整理了一下高频的前端面试题，分享给大家一起来学习。如有问题，欢迎指正！ 欢迎大家关注该专栏：点赞👍 + 收藏🤞 前端面试题系列文章： 【1】2022高频前端面试题——HTML篇 【2】2022',
        poster: 'https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1e1900201d7246f9b6c51c89ff0f47fd~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `Vue2.x 采用数据劫持结合发布订阅模式（PubSub 模式）的方式，通过 Object.defineProperty 来劫持各个属性的 setter、getter，在数据变动时发布消息给订阅者，触发相应的监听回调。
当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时，Vue 将遍历它的属性，用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter，但是在内部它们让 Vue 追踪依赖，在属性被访问和修改时通知变化。
Vue 的数据双向绑定整合了 Observer，Compile 和 Watcher 三者，通过 Observer 来监听自己的 model 的数据变化，通过 Compile 来解析编译模板指令，最终利用 Watcher 搭起 Observer 和 Compile 之间的通信桥梁，达到数据变化->视图更新，视图交互变化（例如 input 操作）->数据 model 变更的双向绑定效果。
Vue3.x 放弃了 Object.defineProperty ，使用 ES6 原生的 Proxy，来解决以前使用 Object.defineProperty 所存在的一些问题。`,
        support: 90,
        look: 120,
    },
    {
        title: '10.【Node 连载 6/9】探索面向未来标准的 Node.js Web 框架',
        author: 'xxx',
        createTime: '2022-6-20',
        content: '繁易来自阿里集团淘系技术部 - Node.js 架构组，是一名资深的前端工程师。在本文中，繁易大大将为我们讲述探索面向未来标准的 Node.js Web 框架。',
        poster: 'https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/66ea9300a688446d9cb14eb9ec567872~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `众所周知，Node.js 自 2009 年发布以来，已经有十多年的时间了。在这期间，各种 Web 框架层出不穷。在我们淘宝技术团队中，我们早早就开始了前后端以及 Node.js 框架等一系列相关的探索和工作。在这里，我想与大家分享一下我们最近一段时间的思考和进展。目前，Node.js 可以用于很多不同的任务，包括编写 CLI、处理数据、编写 Restful API、页面渲染等等一系列工作。可以说，Node.js 的出现使得前端工程师的领域发生了拓展，越来越广泛，也催生了大前端的概念。`,
        support: 100,
        look: 333,
    },
    {
        title: '11.做寒冬里的一团火-Vue面试',
        author: 'xxx',
        createTime: '2022-6-20',
        content: '这个春天依旧寒冷，在冷风中，唯一能做的就是燃烧自己，如果烧不起来，那就进来一起抱团取暖吧。😂😂😂❤️❤️❤️',
        poster: 'https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b5d62c6a1a8b4ea98871bbe489b2359b~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `众所周知，Node.js 自 2009 年发布以来，已经有十多年的时间了。在这期间，各种 Web 框架层出不穷。在我们淘宝技术团队中，我们早早就开始了前后端以及 Node.js 框架等一系列相关的探索和工作。在这里，我想与大家分享一下我们最近一段时间的思考和进展。目前，Node.js 可以用于很多不同的任务，包括编写 CLI、处理数据、编写 Restful API、页面渲染等等一系列工作。可以说，Node.js 的出现使得前端工程师的领域发生了拓展，越来越广泛，也催生了大前端的概念。`,
        support: 100,
        look: 333,
    },
    {
        title: '12.面试官：你可以用 for of 遍历 Object 吗？',
        author: 'xxx',
        createTime: '2022-6-20',
        content: '可以说迭代器模式就是为了遍历存在的。提到遍历，大家都对那些手段耳熟能详了，下面我们先简单列一下各种数据类型的遍历',
        poster: 'https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/32938d0ae94142f68fa09c28cbd942f8~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `根据上面讲到的内容，需要给对象也部署 Iterator 接口（其实就是在Object.prototype上实现一个以Symbol.iterator为名的function，这个function返回一个有next方法的对象，每调用一次 next, 能够依次返回数组中的项，直到它指向数据结构的结束位置 ）`,
        support: 100,
        look: 333,
    },
    {
        title: '13.闭包？什么是闭包？--JavaScript前端',
        author: 'abc',
        createTime: '2022-1-20',
        content: '闭包的背景 由于js中只有两种作用域，全局作用域和函数作用域， 闭包的使用 函数柯里化 使用call实现bind 矩阵点击应用',
        poster: 'https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/26f8803db63f4042a76c8e46151d6254~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp',
        detail: `为了便于理解，我们将外部函数比喻为妈妈本体，里面保存着总钱数这个变量和消费这个行为，通过创建为儿子消费的这个行为对象，然后执行这个行为花费5元，返回剩余的95元。
这个就是为了将变量money保存在mother本体内而避免暴露在外部的全局环境作用域中，只能通过mother()创建消费行为来影响money这个变量。
        由此可以归纳总结使用闭包的三个步骤
用外层函数包裹变量，函数；
        外层函数返回内层函数；
        外部用变量保存外部函数返回的内层函数
目的是为了形成一个专属的变量，只在专属的作用域中操作。
        上述的闭包代码示例中，有一个缺陷的场景是，在后续不需要money变量的情况下，没有释放该变量，造成内存泄露。原因是payForSon这个函数的作用域链引用着money对象，解决的办法是将payForSon = null就可以释放方法作用域，进而解除对money的引用，最后释放money变量。
        `,
        support: 40,
        look: 1100,
    },
    {
        title: '14.GPT-4 炸裂成那样，前端真的还有机会吗？我是这么看的~',
        author: 'abc',
        createTime: '2022-2-20',
        content: '虽然在短期内，ChatGPT将使开发人员能够更快地完成开发工作，而不是取代他们。但技术的发展日新月异，很难想象 ChatGPT及其他的大模型在 10 到 20 年后会是什么样子。',
        poster: 'https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c71aab5ed03640aabf2d70a618f3bb06~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `其实这背后的逻辑并不难理解，chatGPT 所训练的数据来源于互联网，它目前还具备自我生成、左右手互博的能力，也就意味着，答案的最终来源仍然是网页背后千千万万的开发者。如果他们被一瞬间干掉了，chatGPT 的数据从哪来？答案的保真度、新鲜度从何而来？你敢说 2 年、3年、5年后的React写法、功能和现在一样？还有那千千万万不断迭代的 npm 包！
更有甚的可能会是一些严重的社会民生问题，比如，你司的医疗APP接入 chatGPT，作为24小时人工智能客服机器人给病人问诊开药，你能保证机器人不会将感冒错误地诊断为XinGuan？你能保证机器人不会给病人开错药？
因此，准确性可能会逐渐提高，但永远不会完美，因为互联网上的数据本身准确性就非常有问题。在庞大的用户群面前，哪怕一两个典型的事件就足可能杀死一家公司，更别说几十上百件。
`,
        support: 60,
        look: 200,
    },
    {
        title: '15.2023高频前端面试题合集之Vue篇',
        author: 'dev',
        createTime: '2022-2-20',
        content: '近期整理了一下高频的前端面试题，分享给大家一起来学习。如有问题，欢迎指正！ 欢迎大家关注该专栏：点赞👍 + 收藏🤞 前端面试题系列文章： 【1】2022高频前端面试题——HTML篇 【2】2022',
        poster: 'https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1e1900201d7246f9b6c51c89ff0f47fd~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `Vue2.x 采用数据劫持结合发布订阅模式（PubSub 模式）的方式，通过 Object.defineProperty 来劫持各个属性的 setter、getter，在数据变动时发布消息给订阅者，触发相应的监听回调。
当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时，Vue 将遍历它的属性，用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter，但是在内部它们让 Vue 追踪依赖，在属性被访问和修改时通知变化。
Vue 的数据双向绑定整合了 Observer，Compile 和 Watcher 三者，通过 Observer 来监听自己的 model 的数据变化，通过 Compile 来解析编译模板指令，最终利用 Watcher 搭起 Observer 和 Compile 之间的通信桥梁，达到数据变化->视图更新，视图交互变化（例如 input 操作）->数据 model 变更的双向绑定效果。
Vue3.x 放弃了 Object.defineProperty ，使用 ES6 原生的 Proxy，来解决以前使用 Object.defineProperty 所存在的一些问题。`,
        support: 90,
        look: 120,
    },
    {
        title: '16.【Node 连载 6/9】探索面向未来标准的 Node.js Web 框架',
        author: 'xxx',
        createTime: '2022-6-20',
        content: '繁易来自阿里集团淘系技术部 - Node.js 架构组，是一名资深的前端工程师。在本文中，繁易大大将为我们讲述探索面向未来标准的 Node.js Web 框架。',
        poster: 'https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/66ea9300a688446d9cb14eb9ec567872~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `众所周知，Node.js 自 2009 年发布以来，已经有十多年的时间了。在这期间，各种 Web 框架层出不穷。在我们淘宝技术团队中，我们早早就开始了前后端以及 Node.js 框架等一系列相关的探索和工作。在这里，我想与大家分享一下我们最近一段时间的思考和进展。目前，Node.js 可以用于很多不同的任务，包括编写 CLI、处理数据、编写 Restful API、页面渲染等等一系列工作。可以说，Node.js 的出现使得前端工程师的领域发生了拓展，越来越广泛，也催生了大前端的概念。`,
        support: 100,
        look: 333,
    },
    {
        title: '17.做寒冬里的一团火-Vue面试',
        author: 'xxx',
        createTime: '2022-6-20',
        content: '这个春天依旧寒冷，在冷风中，唯一能做的就是燃烧自己，如果烧不起来，那就进来一起抱团取暖吧。😂😂😂❤️❤️❤️',
        poster: 'https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b5d62c6a1a8b4ea98871bbe489b2359b~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `众所周知，Node.js 自 2009 年发布以来，已经有十多年的时间了。在这期间，各种 Web 框架层出不穷。在我们淘宝技术团队中，我们早早就开始了前后端以及 Node.js 框架等一系列相关的探索和工作。在这里，我想与大家分享一下我们最近一段时间的思考和进展。目前，Node.js 可以用于很多不同的任务，包括编写 CLI、处理数据、编写 Restful API、页面渲染等等一系列工作。可以说，Node.js 的出现使得前端工程师的领域发生了拓展，越来越广泛，也催生了大前端的概念。`,
        support: 100,
        look: 333,
    },
    {
        title: '18.面试官：你可以用 for of 遍历 Object 吗？',
        author: 'xxx',
        createTime: '2022-6-20',
        content: '可以说迭代器模式就是为了遍历存在的。提到遍历，大家都对那些手段耳熟能详了，下面我们先简单列一下各种数据类型的遍历',
        poster: 'https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/32938d0ae94142f68fa09c28cbd942f8~tplv-k3u1fbpfcp-zoom-crop-mark:1512:1512:1512:851.awebp?',
        detail: `根据上面讲到的内容，需要给对象也部署 Iterator 接口（其实就是在Object.prototype上实现一个以Symbol.iterator为名的function，这个function返回一个有next方法的对象，每调用一次 next, 能够依次返回数组中的项，直到它指向数据结构的结束位置 ）`,
        support: 100,
        look: 333,
    }
]